package com.rose.redis.lua;

import org.springframework.context.annotation.Bean;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.scripting.support.ResourceScriptSource;

/**
 * <p>
 *  Redis使用lua的好处：
 *  1.减少网络开销：本来5次网络请求的操作，可以用一个请求完成，原先5次请求的逻辑放在redis服务器上完成。使用脚本，减少了网络往返时延。
 *  2.原子操作：Redis会将整个脚本作为一个整体执行，中间不会被其他命令插入。
 *  3.复用：客户端发送的脚本会永久存储在Redis中，意味着其他客户端可以复用这一脚本而不需要使用代码完成同样的逻辑。
 * </p>
 *
 * @author: zhu.chen
 * @date: 2021/1/5
 * @version: v1.0.0
 */
//@Configuration
public class LuaConfiguration {

    @Bean
    public DefaultRedisScript<Boolean> redisScript(){
        DefaultRedisScript<Boolean> redisScript = new DefaultRedisScript<>();
        redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/Test.lua")));
        redisScript.setResultType(Boolean.class);
        return redisScript;
    }

}
